Azure Blockchain ServiceでQuorum動かす
code:注意点
* Azure Blockchain ServiceをABSと省略して記載することがある
* ABSはまだプレビューなので、ABS自体の仕様が変更される可能性も高いです
用語
必要に応じて追記していこうと思います。
メンバー
ABSで管理するコンソーシアム参加者のこと。Validation nodesを1or2台、Transaction nodesを1~10台持てる。
メンバーにはADMIN/USERどちらかのロールが割り当てられる。
チュートリアル
参考
Azure Portalで作業する。
リソースの作成→Azure Blockchain Service
今回はお試しなのでPricingはBasicを選んでみる。
リソースが作成されるまで結構時間がかかる(10分以上)
リソース作成されたら、
リソースグループ→ABS用のリソースグループをクリック→ABSリソースがあると思うのでクリック
→Transaction nodesメニュー→nodeをクリック→Access Keysメニュー→HTTPS URLを取得
MetaMaskのネットワークに先ほど取得したHTTPS URLをカスタムネットワークとして追加する。
これでRemix等で利用できるようになる
remixから適当なコントラクトをデプロイして動かしてみる。
コントラクトcallやトランザクション送信ができることを確認する
トランザクション送信時はMetaMaskのGas priceを0にして実行する
PortalのABSのtransaction nodesメニューから2台目のnodeを追加してみる。
node追加したら先ほどと同様にMetaMaskに新たなカスタムネットワークを追加する
先ほどremixでデプロイしたコントラクトに対してcallやsendを実行し、最初に作ったnodeとデータが共有されていることを確認する
コンソーシアムの管理
参考
コンソーシアムへの招待
参考
PowerShellから招待を行う。Portalからポチポチ招待するのはまだ出来なさそう。
PowerShellはAzure PortalのCloud Shell機能から利用できる。
https://gyazo.com/9502dab95ffb66ceb8e02b2b5fe17170
別のAzureサブスクリプションに招待を送るPowerShellコマンド
コマンド中の$変数はセットアップ時に定義される(自分でセットアップコマンドをあらかじめ叩いておく)
code:New-BlockchainMemberInvitation
New-BlockchainMemberInvitation -SubscriptionId '<サブスクリプションID>' -Role '<USER|ADMIN>' -Members $ContractConnection.Members -Web3Account $MemberAccount -Web3Client $Connection
コンソーシアムへの参加
招待を受け取った側はPortalからコンソーシアム参加できる。
Azure Portalへアクセスし、招待を受け取ったAzureサブスクリプションにてAzure Blockchain Serviceを作成する。この時、コンソーシアムの制限があるので、作成時に留意すること。 デプロイが完了したらチュートリアルでやったようにHTTPS URLをMetaMaskに追加し、以前デプロイしたコントラクトにアクセスし、アクセスするデータが共有されていることを確認する。
開発環境
Remix, MetaMask, Truffleといった開発環境も当然使えるが、VS CodeにはAzure Blockchain Development Kit for EthereumというExtensionがある。